const data = [
  {
    value: '1',
    children: [
      {
        value: '1-1'
      },
      {
        value: '1-2',
        children: [
          {
            value: '1-2-1'
          }
        ]
      }
    ]
  },
  {
    value: '2'
  }
];

// const res = [];
// function flatten(data) {
//   for (const item of data) {
//     if (item.value) {
//       res.push({ value: item.value });
//     }
//     if (item.children) {
//       flatten(item.children);
//     }
//   }
//   return res;
// }

// function flatten(data) {
//   const res = [];
//   for (const item of data) {
//     if (item.children) {
//       res.push({ value: item.value }, ...flatten(item.children));
//     } else {
//       res.push({ value: item.value });
//     }
//   }
//   return res;
// }

// 广度
function flatten(arr) {
  const queue = arr;
  const res = [];
  while (queue.length) {
    let obj = queue.shift();
    res.push({ value: obj.value });
    if (obj.children && obj.children.length) {
      queue.push(...obj.children);
    }
  }
  return res
}

// console.log(flatten(data))
// console.log(data);


// 返回这个
// const res = [
//   { value: '1' },
//   { value: '1-1' },
//   { value: '1-2' },
//   { value: '1-2-1' }
//   { value: '2' }
// ];